Objekt: Schnittstelle
Symbol:
Schlüsselwort: INTERFACE
Eine Schnittstelle ist ein Mittel der objektorientierten Programmierung. Das Objekt ITF
beschreibt ein Set von Methoden- und Eigenschaft-Prototypen. Prototyp bedeutet in diesem Zusammenhang, dass die Methoden und Eigenschaften nur Deklarationen und keine Implementierung enthalten.
Auf diese Weise können Sie verschiedene Funktionsbausteine, die gemeinsame Eigenschaften haben, gleichartig nutzen. Ein Objekt ITF fügen Sie der Applikation oder dem Projekt mit dem Befehl hinzu.
Für weitere Informationen siehe: Implementieren einer Schnittstelle
Vererbung | |
Name | Schnittstellenname |
Erweitert |
Für weitere Informationen siehe: Erweitern einer Schnittstelle |
Tipp
Mehrfachvererbung wird bei Schnittstellen unterstützt.
Dem Objekt ITF können Sie die Objekte Schnittstelleneigenschaft und Schnittstellenmethode hinzufügen. Schnittstellenmethoden dürfen nur die Deklarationen von Eingabe-, Ausgabe-, und VAR_IN_OUT-Variablen, aber keine Implementierung enthalten.
Damit Sie eine Schnittstelle auch im Programm verwenden können, muss es einen Funktionsbaustein geben, der diese Schnittstelle implementiert.
Das bedeutet:
Der Funktionsbaustein enthält in seinem Deklarationsteil die Schnittstelle in seiner IMPLEMENTS-Liste.
Der Funktionsbaustein enthält für alle Methoden und Eigenschaften-Prototypen der Schnittstelle eine Implementierung.
Ein Funktionsbaustein kann eine oder mehrere Schnittstellen implementieren. Sie können die gleiche Methode mit identischen Parametern, aber unterschiedlichem Implementierungscode in verschiedenen Funktionsbausteinen verwenden.
Sie dürfen keine Variablen innerhalb einer Schnittstelle deklarieren. Eine Schnittstelle hat keinen Implementierungsteil und keine Aktionen. Nur eine Sammlung von Methoden ist definiert und in diesen dürfen Sie nur Eingabe-, Ausgabe- und VAR_IN_OUT-Variablen definieren.
CODESYS behandelt Variablen, die mit dem Typ einer Schnittstelle deklariert sind, immer als Referenzen.
Ein Funktionsbaustein, der eine Schnittstelle implementiert, muss Implementierungs-Code für die Methoden der Schnittstelle enthalten. Die Methoden haben Sie genauso benannt wie in der Schnittstelle und die Methoden enthalten dieselben Eingabe-, Ausgabe- und VAR_IN_OUT-Variablen wie in der Schnittstelle.
Schnittstellenreferenzen und Online-Change
Mit Compiler-Version < 3.4.1.0 kann Folgendes passieren:
Wenn ein Funktionsbaustein seine Daten ändert, weil Variablen hinzugefügt oder gelöscht werden, oder weil sich der Typ von Variablen ändert, dann kopiert CODESYS alle Instanzen des Funktionsbausteins an einen neuen Speicherplatz. In diesem Fall verweist eine Schnittstellenreferenz aber nicht auf den neuen Speicherplatz, sondern immer noch auf den alten.
Mit Compiler-Versionen >= 3.4.1.0 adressiert CODESYS die Schnittstellen-Referenzen automatisch um, so dass CODESYS auch im Falle eines Online-Change die korrekte Schnittstelle referenziert. Dafür benötigt CODESYS zusätzlichen Code und mehr Zeit, sodass abhängig von der Anzahl der betroffenen Objekte Jitter-Probleme auftreten können. Deshalb zeigt CODESYS vor Ausführung des Online-Change die Anzahl der betroffenen Variablen und Schnittstellen-Referenzen an und Sie entscheiden, ob der Online-Change durchgeführt oder abgebrochen wird.
Definition einer Schnittstelle und Verwendung in einem Funktionsbaustein
Sie haben die Schnittstelle ITF unterhalb der Applikation eingefügt. Die Schnittstelle enthält die Methoden Method1 und Method2. ITF, Method1 und Method2 enthalten keinen Implementierungscode. Nur im Deklarationsteil der Methoden fügen Sie die benötigten Variablendeklarationen ein.
Wenn Sie anschließend einen Funktionsbaustein im Gerätebaum einfügen der die Schnittstelle ITF implementiert, fügt CODESYS automatisch auch die Methoden Method1 und Method2 unter dem Funktionsbaustein ein. Hier können Sie in den Methoden funktionsbaustein-spezifischen Code implementieren.
